package com.legendframework.core.dao.yaml;

import com.legendframework.core.dao.CacheFlush;

import java.io.Serializable;
import java.util.Collection;
import java.util.Map;

/**
 * 缓存接口
 * @param <T> 存储的数据类型
 */
public interface Cache<T> extends CacheFlush , CacheTransaction{

    /**
     * 获取所有
     * @return 数据集合
     */
    Collection<T> getCacheAll();

    /**
     * 获取一个
     * @param key key
     * @return 数据
     */
    T getCacheOne(Serializable key);

    /**
     * 根据Key删除一条数据
     * @param key key
     */
    void deleteCacheByKey(Serializable key);

    /**
     * 删除多个Key的数据
     * @param keys keyes
     */
    void deleteCacheBatchKey(Serializable[] keys);

    /**
     * 放置一条数据
     * @param key key
     * @param t 数据
     */
    void putCacheOne(Serializable key, T t);

    /**
     * put多个数据
     * @param map map
     */
    void putCacheBatch(Map<Serializable, T> map);

    /**
     * 清空缓存
     */
    void clear();
}
